#include "global.h"
#include <ship/utils/binarytools/endianness.h>

s16 gLowPassFilterData[16 * 8] ALIGNED(16) = {
    /* 0x0 */ 0,     0,     0,    32767, 0,    0,     0,     0,    // Identity filter (delta function)
    /* 0x1 */ 3854,  4188,  4398, 4469,  4398, 4188,  3854,  3416, // low-freq cutoff (more filtering)
    /* 0x2 */ 3415,  4314,  4915, 5126,  4915, 4314,  3415,  2351,
    /* 0x3 */ 2636,  4433,  5762, 6252,  5762, 4433,  2636,  849,
    /* 0x4 */ 1334,  4196,  6646, 7609,  6646, 4196,  1334,  -802,
    /* 0x5 */ -265,  3421,  7292, 8944,  7292, 3421,  -265,  -1863,
    /* 0x6 */ -1558, 2065,  7146, 9546,  7146, 2065,  -1558, -1682,
    /* 0x7 */ -2353, 726,   7441, 11028, 7441, 726,   -2353, -697,
    /* 0x8 */ -2252, -693,  7121, 11962, 7121, -693,  -2252, 668,
    /* 0x9 */ -1373, -1819, 6299, 12298, 6299, -1819, -1373, 1484,
    /* 0xA */ -213,  -2740, 5843, 13680, 5843, -2740, -213,  1494,
    /* 0xB */ 980,   -3081, 4883, 14286, 4883, -3081, 980,   590,
    /* 0xC */ 1769,  -2973, 3866, 14981, 3866, -2973, 1769,  -568,
    /* 0xD */ 2023,  -2554, 2911, 16397, 2911, -2554, 2023,  -1391,
    /* 0xE */ 1766,  -1918, 2016, 19800, 2016, -1918, 1766,  -1564,
    /* 0xF */ 841,   -853,  863,  26829, 863,  -853,  841,   -820, // high-freq cutoff (less filtering)
};

s16 gHighPassFilterData[15 * 8] ALIGNED(16) = {
    /* 0x0 */ -289,  -291,  -289,  30736, -289,  -291,  -289,  -290, // low-freq cutoff (less filtering)
    /* 0x1 */ -464,  -467,  -467,  29506, -467,  -467,  -464,  -463,
    /* 0x2 */ -662,  -670,  -672,  28101, -672,  -670,  -662,  -656,
    /* 0x3 */ -839,  -855,  -861,  26830, -861,  -855,  -839,  -822,
    /* 0x4 */ -996,  -1024, -1038, 25685, -1038, -1024, -996,  -963,
    /* 0x5 */ -1184, -1236, -1266, 24272, -1266, -1236, -1184, -1118,
    /* 0x6 */ -1357, -1450, -1506, 22900, -1506, -1450, -1357, -1238,
    /* 0x7 */ -1514, -1680, -1784, 21498, -1784, -1680, -1514, -1307,
    /* 0x8 */ -1613, -1877, -2048, 20390, -2048, -1877, -1613, -1298,
    /* 0x9 */ -1657, -2185, -2559, 18869, -2559, -2185, -1657, -1093,
    /* 0xA */ -1524, -2395, -3078, 18030, -3078, -2395, -1524, -739,
    /* 0xB */ -1253, -2504, -3621, 17642, -3621, -2504, -1253, -367,
    /* 0xC */ -525,  -2367, -4732, 17517, -4732, -2367, -525,  0,
    /* 0xD */ -34,   -1762, -5706, 17503, -5706, -1762, -34,   -258,
    /* 0xE */ -772,  -3,    -6985, 17240, -6985, -3,    -772,  -3, // high-freq cutoff (more filtering)
};

// clang-format off
s16 gBandStopFilterData[105 * 8] ALIGNED(16) = {
    // Block 0
    /* 0x00 */ -43,   -716,  -1205, 28210, -1205, -716,  -43,   629,
    /* 0x01 */ 249,   -919,  -1819, 25489, -1819, -919,  249,   1301,
    /* 0x02 */ 1267,  -802,  -2650, 20722, -2650, -802,  1267,  2603,
    /* 0x03 */ 2497,  -210,  -3196, 17617, -3196, -210,  2497,  3339,
    /* 0x04 */ 3413,  690,   -3385, 14754, -3385, 690,   3413,  3035,
    /* 0x05 */ 3859,  1734,  -3416, 12704, -3416, 1734,  3859,  2042,
    /* 0x06 */ 3858,  2907,  -3414, 11516, -3414, 2907,  3858,  890,
    /* 0x07 */ 3374,  4194,  -3345, 10859, -3345, 4194,  3374,  80,
    /* 0x08 */ 2446,  5521,  -3130, 10483, -3130, 5521,  2446,  86,
    /* 0x09 */ 1275,  6760,  -2665, 10225, -2665, 6760,  1275,  1140,
    /* 0x0A */ 252,   7778,  -1836, 10022, -1836, 7778,  252,   3010,
    /* 0x0B */ -98,   8427,  -461,  9805,  -461,  8427,  -98,   4988,
    /* 0x0C */ 719,   7392,  1528,  8201,  1528,  7392,  719,   5286,
    /* 0x0D */ 2499,  5359,  3651,  5985,  3651,  5359,  2499,  3761,

    // Block 1
    /* 0x0E */ 711,   -205,  -1026, 27608, -1026, -205,  711,   1271,
    /* 0x0F */ 1335,  -108,  -1520, 24836, -1520, -108,  1335,  2003,
    /* 0x10 */ 2540,  455,   -2104, 19853, -2104, 455,   2540,  2712,
    /* 0x11 */ 3406,  1298,  -2347, 16266, -2347, 1298,  3406,  2397,
    /* 0x12 */ 3860,  2321,  -2440, 14094, -2440, 2321,  3860,  1428,
    /* 0x13 */ 3858,  3511,  -2439, 12888, -2439, 3511,  3858,  259,
    /* 0x14 */ 3248,  4679,  -2238, 11859, -2238, 4679,  3248,  -575,
    /* 0x15 */ 2329,  6021,  -1929, 11579, -1929, 6021,  2329,  -626,
    /* 0x16 */ 1225,  7613,  -1395, 11967, -1395, 7613,  1225,  332,
    /* 0x17 */ 172,   8785,  -352,  12028, -352,  8785,  172,   2119,
    /* 0x18 */ -172,  8198,  1139,  10360, 1139,  8198,  -172,  3385,
    /* 0x19 */ 511,   7006,  2830,  8649,  2830,  7006,  511,   3421,
    /* 0x1A */ 1995,  5313,  4595,  6801,  4595,  5313,  1995,  2158,

    // Block 2
    /* 0x1B */ 1196,  313,   -815,  26961, -815,  313,   1196,  1154,
    /* 0x1C */ 1896,  666,   -1159, 23821, -1159, 666,   1896,  1500,
    /* 0x1D */ 2934,  1569,  -1548, 19353, -1548, 1569,  2934,  1308,
    /* 0x1E */ 3463,  2673,  -1703, 16770, -1703, 2673,  3463,  316,
    /* 0x1F */ 3269,  3757,  -1608, 14587, -1608, 3757,  3269,  -910,
    /* 0x20 */ 2585,  4889,  -1364, 13325, -1364, 4889,  2585,  -1763,
    /* 0x21 */ 1588,  6277,  -970,  13171, -970,  6277,  1588,  -1922,
    /* 0x22 */ 337,   8121,  -265,  14134, -265,  8121,  337,   -1186,
    /* 0x23 */ -795,  8193,  882,   12631, 882,   8193,  -795,  391,
    /* 0x24 */ -1058, 7224,  2132,  10492, 2132,  7224,  -1058, 1444,
    /* 0x25 */ -503,  6540,  3803,  9532,  3803,  6540,  -503,  1541,
    /* 0x26 */ 906,   5326,  5759,  8358,  5759,  5326,  906,   423,

    // Block 3
    /* 0x27 */ 1298,  781,   -597,  27018, -597,  781,   1298,  392,
    /* 0x28 */ 1914,  1364,  -834,  24334, -834,  1364,  1914,  205,
    /* 0x29 */ 2474,  2527,  -1015, 19916, -1015, 2527,  2474,  -817,
    /* 0x2A */ 2277,  3649,  -934,  16994, -934,  3649,  2277,  -2050,
    /* 0x2B */ 1545,  4865,  -673,  15635, -673,  4865,  1545,  -2964,
    /* 0x2C */ 366,   6363,  -181,  15693, -181,  6363,  366,   -3252,
    /* 0x2D */ -1017, 6734,  611,   13854, 611,   6734,  -1017, -2187,
    /* 0x2E */ -1937, 6500,  1558,  12000, 1558,  6500,  -1937, -774,
    /* 0x2F */ -2216, 6018,  2714,  10698, 2714,  6018,  -2216, 171,
    /* 0x30 */ -1795, 5344,  4221,  9864,  4221,  5344,  -1795, 182,
    /* 0x31 */ -659,  4411,  6228,  9260,  6228,  4411,  -659,  -908,

    // Block 4
    /* 0x32 */ 968,   1138,  -358,  27228, -358,  1138,  968,   -607,
    /* 0x33 */ 1251,  1846,  -453,  24418, -453,  1846,  1251,  -1246,
    /* 0x34 */ 1138,  3176,  -412,  20709, -412,  3176,  1138,  -2601,
    /* 0x35 */ 313,   4550,  -119,  19167, -119,  4550,  313,   -3633,
    /* 0x36 */ -972,  5170,  419,   16290, 419,   5170,  -972,  -3351,
    /* 0x37 */ -2123, 5230,  1090,  13680, 1090,  5230,  -2123, -2199,
    /* 0x38 */ -2916, 5066,  1926,  12019, 1926,  5066,  -2916, -929,
    /* 0x39 */ -3202, 4669,  2995,  10953, 2995,  4669,  -3202, -80,
    /* 0x3A */ -2874, 3990,  4369,  10214, 4369,  3990,  -2874, -84,
    /* 0x3B */ -1937, 3001,  6108,  9601,  6108,  3001,  -1937, -1071,

    // Block 5
    /* 0x3C */ 310,   1351,  -102,  27950, -102,  1351,  310,   -1287,
    /* 0x3D */ 169,   2166,  -55,   25895, -55,   2166,  169,   -2088,
    /* 0x3E */ -697,  3332,  252,   21292, 252,   3332,  -697,  -2909,
    /* 0x3F */ -1846, 3873,  739,   17298, 739,   3873,  -1846, -2549,
    /* 0x40 */ -2904, 4036,  1371,  14658, 1371,  4036,  -2904, -1485,
    /* 0x41 */ -3657, 3912,  2183,  12999, 2183,  3912,  -3657, -261,
    /* 0x42 */ -3814, 3385,  3124,  11558, 3124,  3385,  -3814, 561,
    /* 0x43 */ -3535, 2679,  4428,  10890, 4428,  2679,  -3535, 589,
    /* 0x44 */ -2812, 1718,  6312,  10782, 6312,  1718,  -2812, -299,

    // Block 6
    /* 0x45 */ -472,  1315,  164,   27677, 164,   1315,  -472,  -1185,
    /* 0x46 */ -993,  1945,  353,   24630, 353,   1945,  -993,  -1551,
    /* 0x47 */ -2181, 2706,  860,   19924, 860,   2706,  -2181, -1347,
    /* 0x48 */ -3275, 2979,  1521,  16895, 1521,  2979,  -3275, -319,
    /* 0x49 */ -3842, 2725,  2248,  14245, 2248,  2725,  -3842, 889,
    /* 0x4A */ -3933, 2186,  3141,  12579, 3141,  2186,  -3933, 1665,
    /* 0x4B */ -3664, 1431,  4428,  11971, 4428,  1431,  -3664, 1747,
    /* 0x4C */ -3021, 346,   6399,  12209, 6399,  346,   -3021, 1024,

    // Block 7
    /* 0x4D */ -1075, 1074,  417,   27236, 417,   1074,  -1075, -395,
    /* 0x4E */ -1798, 1521,  741,   24438, 741,   1521,  -1798, -206,
    /* 0x4F */ -2921, 1848,  1426,  19572, 1426,  1848,  -2921, 803,
    /* 0x50 */ -3491, 1649,  2169,  16192, 2169,  1649,  -3491, 1954,
    /* 0x51 */ -3600, 1124,  3106,  14379, 3106,  1124,  -3600, 2726,
    /* 0x52 */ -3300, 278,   4453,  13834, 4453,  278,   -3300, 2867,
    /* 0x53 */ -2282, -916,  5804,  12748, 5804,  -916,  -2282, 2012,

    // Block 8
    /* 0x54 */ -1306, 682,   649,   26892, 649,   682,   -1306, 599,
    /* 0x55 */ -1951, 858,   1073,  23787, 1073,  858,   -1951, 1214,
    /* 0x56 */ -2705, 755,   1945,  19505, 1945,  755,   -2705, 2450,
    /* 0x57 */ -2857, 207,   2996,  17354, 2996,  207,   -2857, 3289,
    /* 0x58 */ -2261, -722,  4101,  15425, 4101,  -722,  -2261, 3173,
    /* 0x59 */ -1164, -1891, 5287,  13853, 5287,  -1891, -1164, 2227,

    // Block 9
    /* 0x5A */ -1119, 202,   869,   27136, 869,   202,   -1119, 1249,
    /* 0x5B */ -1545, 108,   1432,  24611, 1432,  108,   -1545, 1984,
    /* 0x5C */ -1675, -472,  2529,  20597, 2529,  -472,  -1675, 2814,
    /* 0x5D */ -1040, -1426, 3661,  17877, 3661,  -1426, -1040, 2634,
    /* 0x5E */ 105,   -2626, 4871,  15944, 4871,  -2626, 105,   1615,

    // Block 10
    /* 0x5F */ -554,  -321,  1071,  27687, 1071,  -321,  -554,  1185,
    /* 0x60 */ -562,  -704,  1738,  25171, 1738,  -704,  -562,  1585,
    /* 0x61 */ 73,    -1749, 3045,  21572, 3045,  -1749, 73,    1458,
    /* 0x62 */ 1152,  -2704, 3884,  16963, 3884,  -2704, 1152,  320,

    // Block 11
    /* 0x63 */ 222,   -806,  1221,  27862, 1221,  -806,  222,   404,
    /* 0x64 */ 632,   -1385, 1908,  24706, 1908,  -1385, 632,   208,
    /* 0x65 */ 1605,  -2339, 2840,  18439, 2840,  -2339, 1605,  -756,

    // Block 12
    /* 0x66 */ 861,   -1081, 1224,  25856, 1224,  -1081, 861,   -576,
    /* 0x67 */ 1422,  -1655, 1804,  21885, 1804,  -1655, 1422,  -1117,

    // Block 13
    /* 0x68 */ 434,   -453,  467,   29652, 467,   -453,  434,   -405,
};

s16 gBandPassFilterData[105 * 8] ALIGNED(16) = {
    // Block 0
    /* 0x00 */ 687,   4058,  6599,  7544,  6599,  4058,  687,   -2532,
    /* 0x01 */ -1303, 2777,  6337,  7745,  6337,  2777,  -1303, -4185,
    /* 0x02 */ -2873, 1376,  5931,  7886,  5931,  1376,  -2873, -4520,
    /* 0x03 */ -4108, 0,     5913,  8723,  5913,  0,     -4108, -3999,
    /* 0x04 */ -4233, -1334, 5242,  8775,  5242,  -1334, -4233, -2371,
    /* 0x05 */ -3882, -2547, 4808,  9389,  4808,  -2547, -3882, -900,
    /* 0x06 */ -3072, -3668, 4423,  10438, 4423,  -3668, -3072, 0,
    /* 0x07 */ -1914, -4609, 3950,  11819, 3950,  -4609, -1914, 0,
    /* 0x08 */ -678,  -5227, 3301,  13449, 3301,  -5227, -678,  -903,
    /* 0x09 */ 246,   -5250, 2363,  14858, 2363,  -5250, 246,   -2189,
    /* 0x0A */ 509,   -4812, 1262,  16454, 1262,  -4812, 509,   -3143,
    /* 0x0B */ 0,     -4404, 0,     20367, 0,     -4404, 0,     -3591,
    /* 0x0C */ -1151, -2707, -1393, 19954, -1393, -2707, -1151, -2310,
    /* 0x0D */ -1765, -1920, -2014, 19800, -2014, -1920, -1765, -1566,

    // Block 1
    /* 0x0E */ -3122, 1346,  5464,  7125,  5464,  1346,  -3122, -5776,
    /* 0x0F */ -4566, 0,     5211,  7489,  5211,  0,     -4566, -5723,
    /* 0x10 */ -4941, -1265, 4474,  7249,  4474,  -1265, -4941, -4155,
    /* 0x11 */ -4932, -2431, 4021,  7549,  4021,  -2431, -4932, -2447,
    /* 0x12 */ -4511, -3587, 3678,  8286,  3678,  -3587, -4511, -927,
    /* 0x13 */ -3660, -4711, 3314,  9396,  3314,  -4711, -3660, 0,
    /* 0x14 */ -2471, -5685, 2820,  10810, 2820,  -5685, -2471, 0,
    /* 0x15 */ -1213, -6349, 2123,  12463, 2123,  -6349, -1213, -929,
    /* 0x16 */ -272,  -6581, 1189,  14354, 1189,  -6581, -272,  -2327,
    /* 0x17 */ 0,     -6351, 0,     16604, 0,     -6351, 0,     -3460,
    /* 0x18 */ -509,  -4812, -1262, 16454, -1262, -4812, -509,  -3143,
    /* 0x19 */ -1488, -3277, -2395, 16401, -2395, -3277, -1488, -2045,
    /* 0x1A */ -2021, -2555, -2910, 16397, -2910, -2555, -2021, -1392,

    // Block 2
    /* 0x1B */ -5281, -1216, 4054,  6441,  4054,  -1216, -5281, -5221,
    /* 0x1C */ -5495, -2330, 3552,  6498,  3552,  -2330, -5495, -3511,
    /* 0x1D */ -5377, -3474, 3206,  6991,  3206,  -3474, -5377, -1659,
    /* 0x1E */ -4853, -4693, 2893,  7887,  2893,  -4693, -4853, 0,
    /* 0x1F */ -3646, -5586, 2357,  8623,  2357,  -5586, -3646, 965,
    /* 0x20 */ -2373, -6636, 1821,  10132, 1821,  -6636, -2373, 971,
    /* 0x21 */ -1086, -7852, 1115,  12658, 1115,  -7852, -1086, 0,
    /* 0x22 */ 0,     -8182, 0,     14837, 0,     -8182, 0,     -1565,
    /* 0x23 */ 272,   -6581, -1189, 14354, -1189, -6581, 272,   -2326,
    /* 0x24 */ -246,  -5250, -2363, 14858, -2363, -5250, -246,  -2189,
    /* 0x25 */ -1231, -3701, -3393, 14931, -3393, -3701, -1231, -1181,
    /* 0x26 */ -1768, -2974, -3865, 14981, -3865, -2974, -1768, -569,

    // Block 3
    /* 0x27 */ -5832, -3391, 2948,  6305,  2948,  -3391, -5832, -2116,
    /* 0x28 */ -5587, -4647, 2641,  7014,  2641,  -4647, -5587, 0,
    /* 0x29 */ -4365, -5434, 2063,  7306,  2063,  -5434, -4365, 1734,
    /* 0x2A */ -3036, -6379, 1534,  8205,  1534,  -6379, -3036, 2660,
    /* 0x2B */ -1576, -7586, 916,   9927,  916,   -7586, -1576, 2682,
    /* 0x2C */ 0,     -9097, 0,     12831, 0,     -9097, 0,     1740,
    /* 0x2D */ 1086,  -7852, -1115, 12658, -1115, -7852, 1086,  0,
    /* 0x2E */ 1213,  -6349, -2123, 12463, -2123, -6349, 1213,  -929,
    /* 0x2F */ 678,   -5227, -3301, 13449, -3301, -5227, 678,   -903,
    /* 0x30 */ -406,  -3992, -4605, 14759, -4605, -3992, -406,  0,
    /* 0x31 */ -979,  -3083, -4882, 14287, -4882, -3083, -979,  589,

    // Block 4
    /* 0x32 */ -4748, -5319, 1902,  6607,  1902,  -5319, -4748, 2218,
    /* 0x33 */ -3402, -6148, 1363,  7101,  1363,  -6148, -3402, 3837,
    /* 0x34 */ -1853, -7246, 787,   8259,  787,   -7246, -1853, 4733,
    /* 0x35 */ 0,     -8777, 0,     10430, 0,     -8777, 0,     4782,
    /* 0x36 */ 1576,  -7586, -916,  9927,  -916,  -7586, 1576,  2682,
    /* 0x37 */ 2373,  -6636, -1821, 10132, -1821, -6636, 2373,  971,
    /* 0x38 */ 2471,  -5685, -2820, 10810, -2820, -5685, 2471,  0,
    /* 0x39 */ 1914,  -4609, -3950, 11819, -3950, -4609, 1914,  0,
    /* 0x3A */ 846,   -3385, -5195, 13035, -5195, -3385, 846,   875,
    /* 0x3B */ 214,   -2741, -5841, 13679, -5841, -2741, 214,   1492,

    // Block 5
    /* 0x3C */ -1989, -7002, 716,   7373,  716,   -7002, -1989, 5976,
    /* 0x3D */ 0,     -8439, 0,     9006,  0,     -8439, 0,     6882,
    /* 0x3E */ 1853,  -7246, -787,  8259,  -787,  -7246, 1853,  4733,
    /* 0x3F */ 3036,  -6379, -1534, 8205,  -1534, -6379, 3036,  2660,
    /* 0x40 */ 3646,  -5586, -2357, 8623,  -2357, -5586, 3646,  965,
    /* 0x41 */ 3660,  -4711, -3314, 9396,  -3314, -4711, 3660,  0,
    /* 0x42 */ 3072,  -3668, -4423, 10438, -4423, -3668, 3072,  0,
    /* 0x43 */ 2003,  -2459, -5656, 11656, -5656, -2459, 2003,  869,
    /* 0x44 */ 1374,  -1820, -6298, 12297, -6298, -1820, 1374,  1483,

    // Block 6
    /* 0x45 */ 1989,  -7002, -716,  7373,  -716,  -7002, 1989,  5976,
    /* 0x46 */ 3402,  -6148, -1363, 7101,  -1363, -6148, 3402,  3837,
    /* 0x47 */ 4365,  -5434, -2063, 7306,  -2063, -5434, 4365,  1734,
    /* 0x48 */ 4853,  -4693, -2893, 7887,  -2893, -4693, 4853,  0,
    /* 0x49 */ 4511,  -3587, -3678, 8286,  -3678, -3587, 4511,  -927,
    /* 0x4A */ 3882,  -2547, -4808, 9389,  -4808, -2547, 3882,  -900,
    /* 0x4B */ 2938,  -1390, -6423, 11264, -6423, -1390, 2938,  0,
    /* 0x4C */ 2253,  -695,  -7120, 11961, -7120, -695,  2253,  667,

    // Block 7
    /* 0x4D */ 4748,  -5319, -1902, 6607,  -1902, -5319, 4748,  2218,
    /* 0x4E */ 5587,  -4647, -2641, 7014,  -2641, -4647, 5587,  0,
    /* 0x4F */ 5377,  -3474, -3206, 6991,  -3206, -3474, 5377,  -1659,
    /* 0x50 */ 4932,  -2431, -4021, 7549,  -4021, -2431, 4932,  -2447,
    /* 0x51 */ 4233,  -1334, -5242, 8775,  -5242, -1334, 4233,  -2371,
    /* 0x52 */ 3218,  0,     -7035, 10795, -7035, 0,     3218,  -1464,
    /* 0x53 */ 2355,  725,   -7440, 11027, -7440, 725,   2355,  -698,

    // Block 8
    /* 0x54 */ 5832,  -3391, -2948, 6305,  -2948, -3391, 5832,  -2116,
    /* 0x55 */ 5495,  -2330, -3552, 6498,  -3552, -2330, 5495,  -3511,
    /* 0x56 */ 4941,  -1265, -4474, 7249,  -4474, -1265, 4941,  -4155,
    /* 0x57 */ 4108,  0,     -5913, 8723,  -5913, 0,     4108,  -3999,
    /* 0x58 */ 2383,  1404,  -6726, 9241,  -6726, 1404,  2383,  -2496,
    /* 0x59 */ 1559,  2063,  -7145, 9545,  -7145, 2063,  1559,  -1684,

    // Block 9
    /* 0x5A */ 5281,  -1216, -4054, 6441,  -4054, -1216, 5281,  -5221,
    /* 0x5B */ 4566,  0,     -5211, 7489,  -5211, 0,     4566,  -5723,
    /* 0x5C */ 2873,  1376,  -5931, 7886,  -5931, 1376,  2873,  -4520,
    /* 0x5D */ 1113,  2760,  -6833, 8572,  -6833, 2760,  1113,  -2779,
    /* 0x5E */ 267,   3420,  -7291, 8943,  -7291, 3420,  267,   -1864,

    // Block 10
    /* 0x5F */ 3122,  1346,  -5464, 7125,  -5464, 1346,  3122,  -5776,
    /* 0x60 */ 1303,  2777,  -6337, 7745,  -6337, 2777,  1303,  -4185,
    /* 0x61 */ -605,  3972,  -6859, 7994,  -6859, 3972,  -605,  -1897,
    /* 0x62 */ -1333, 4196,  -6647, 7610,  -6647, 4196,  -1333, -803,

    // Block 11
    /* 0x63 */ -687,  4058,  -6599, 7544,  -6599, 4058,  -687,  -2532,
    /* 0x64 */ -2251, 4520,  -6201, 6821,  -6201, 4520,  -2251, 0,
    /* 0x65 */ -2636, 4433,  -5763, 6253,  -5763, 4433,  -2636, 847,

    // Block 12
    /* 0x66 */ -3207, 4379,  -5163, 5439,  -5163, 4379,  -3207, 1826,
    /* 0x67 */ -3414, 4314,  -4915, 5127,  -4915, 4314,  -3414, 2350,

    // Block 13
    /* 0x68 */ -3854, 4188,  -4398, 4469,  -4398, 4188,  -3854, 3415,
};

s16 gSawtoothWaveSample[] ALIGNED(16) = {
    // 1st Harmonic
    0,      1023,   2047,   3071,   4095,   5119,   6143,   7167,
    8191,   9215,   10239,  11263,  12287,  13311,  14335,  15359,
    16383,  17407,  18431,  19455,  20479,  21503,  22527,  23551,
    24575,  25599,  26623,  27647,  28671,  29695,  30719,  31743,
    -32767, -31743, -30719, -29695, -28671, -27647, -26623, -25599,
    -24575, -23551, -22527, -21503, -20479, -19455, -18431, -17407,
    -16383, -15359, -14335, -13311, -12287, -11263, -10239, -9215,
    -8191,  -7167,  -6143,  -5119,  -4095,  -3071,  -2047,  -1023,

    // 2nd Harmonic
    0,      2047,   4095,   6143,   8191,   10239,  12287,  14335,
    16383,  18431,  20479,  22527,  24575,  26623,  28671,  30719,
    -32767, -30719, -28671, -26623, -24575, -22527, -20479, -18431,
    -16383, -14335, -12287, -10239, -8191,  -6143,  -4095,  -2047,
    0,      2047,   4095,   6143,   8191,   10239,  12287,  14335,
    16383,  18431,  20479,  22527,  24575,  26623,  28671,  30719,
    -32767, -30719, -28671, -26623, -24575, -22527, -20479, -18431,
    -16383, -14335, -12287, -10239, -8191,  -6143,  -4095,  -2047,

    // 4th Harmonic
    0,      4095,   8191,   12287,  16383,  20479,  24575,  28671,
    -32767, -28671, -24575, -20479, -16383, -12287, -8191,  -4095,
    0,      4095,   8191,   12287,  16383,  20479,  24575,  28671,
    -32767, -28671, -24575, -20479, -16383, -12287, -8191,  -4095,
    0,      4095,   8191,   12287,  16383,  20479,  24575,  28671,
    -32767, -28671, -24575, -20479, -16383, -12287, -8191,  -4095,
    0,      4095,   8191,   12287,  16383,  20479,  24575,  28671,
    -32767, -28671, -24575, -20479, -16383, -12287, -8191,  -4095,

    // 8th Harmonic
    0,      8191,   16383,  24575,  -32767, -24575, -16383, -8191,
    0,      8191,   16383,  24575,  -32767, -24575, -16383, -8191,
    0,      8191,   16383,  24575,  -32767, -24575, -16383, -8191,
    0,      8191,   16383,  24575,  -32767, -24575, -16383, -8191,
    0,      8191,   16383,  24575,  -32767, -24575, -16383, -8191,
    0,      8191,   16383,  24575,  -32767, -24575, -16383, -8191,
    0,      8191,   16383,  24575,  -32767, -24575, -16383, -8191,
    0,      8191,   16383,  24575,  -32767, -24575, -16383, -8191,
};

s16 gTriangleWaveSample[] ALIGNED(16) = {
    // 1st Harmonic
    0,      2047,   4095,   6143,   8191,   10239,  12287,  14335,
    16383,  18431,  20479,  22527,  24575,  26623,  28671,  30719,
    32767,  30719,  28671,  26623,  24575,  22527,  20479,  18431,
    16383,  14335,  12287,  10239,  8191,   6143,   4095,   2047,
    0,      -2047,  -4095,  -6143,  -8191,  -10239, -12287, -14335,
    -16383, -18431, -20479, -22527, -24575, -26623, -28671, -30719,
    -32767, -30719, -28671, -26623, -24575, -22527, -20479, -18431,
    -16383, -14335, -12287, -10239, -8191,  -6143,  -4095,  -2047,

    // 2nd Harmonic
    0,      4095,   8191,   12287,  16383,  20479,  24575,  28671,
    32767,  28671,  24575,  20479,  16383,  12287,  8191,   4095,
    0,      -4095,  -8191,  -12287, -16383, -20479, -24575, -28671,
    -32767, -28671, -24575, -20479, -16383, -12287, -8191,  -4095,
    0,      4095,   8191,   12287,  16383,  20479,  24575,  28671,
    32767,  28671,  24575,  20479,  16383,  12287,  8191,   4095,
    0,      -4095,  -8191,  -12287, -16383, -20479, -24575, -28671,
    -32767, -28671, -24575, -20479, -16383, -12287, -8191,  -4095,

    // 4th Harmonic
    0,      8191,   16383,  24575,  32767,  24575,  16383,  8191,
    0,      -8191,  -16383, -24575, -32767, -24575, -16383, -8191,
    0,      8191,   16383,  24575,  32767,  24575,  16383,  8191,
    0,      -8191,  -16383, -24575, -32767, -24575, -16383, -8191,
    0,      8191,   16383,  24575,  32767,  24575,  16383,  8191,
    0,      -8191,  -16383, -24575, -32767, -24575, -16383, -8191,
    0,      8191,   16383,  24575,  32767,  24575,  16383,  8191,
    0,      -8191,  -16383, -24575, -32767, -24575, -16383, -8191,

    // 8th Harmonic
    0,      16383,  32767,  16383,  0,      -16383, -32767, -16383,
    0,      16383,  32767,  16383,  0,      -16383, -32767, -16383,
    0,      16383,  32767,  16383,  0,      -16383, -32767, -16383,
    0,      16383,  32767,  16383,  0,      -16383, -32767, -16383,
    0,      16383,  32767,  16383,  0,      -16383, -32767, -16383,
    0,      16383,  32767,  16383,  0,      -16383, -32767, -16383,
    0,      16383,  32767,  16383,  0,      -16383, -32767, -16383,
    0,      16383,  32767,  16383,  0,      -16383, -32767, -16383,
};

s16 gSineWaveSample[] ALIGNED(16) = {
    // 1st Harmonic
    0,      3211,   6392,   9511,   12539,  15446,  18204,  20787,
    23169,  25329,  27244,  28897,  30272,  31356,  32137,  32609,
    32767,  32609,  32137,  31356,  30272,  28897,  27244,  25329,
    23169,  20787,  18204,  15446,  12539,  9511,   6392,   3211,
    0,      -3211,  -6392,  -9511,  -12539, -15446, -18204, -20787,
    -23169, -25329, -27244, -28897, -30272, -31356, -32137, -32609,
    -32767, -32609, -32137, -31356, -30272, -28897, -27244, -25329,
    -23169, -20787, -18204, -15446, -12539, -9511,  -6392,  -3211,

    // 2nd Harmonic
    0,      6392,   12539,  18204,  23169,  27244,  30272,  32137,
    32767,  32137,  30272,  27244,  23169,  18204,  12539,  6392,
    0,      -6392,  -12539, -18204, -23169, -27244, -30272, -32137,
    -32767, -32137, -30272, -27244, -23169, -18204, -12539, -6392,
    0,      6392,   12539,  18204,  23169,  27244,  30272,  32137,
    32767,  32137,  30272,  27244,  23169,  18204,  12539,  6392,
    0,      -6392,  -12539, -18204, -23169, -27244, -30272, -32137,
    -32767, -32137, -30272, -27244, -23169, -18204, -12539, -6392,

    // 4th Harmonic
    0,      12539,  23169,  30272,  32767,  30272,  23169,  12539,
    0,      -12539, -23169, -30272, -32767, -30272, -23169, -12539,
    0,      12539,  23169,  30272,  32767,  30272,  23169,  12539,
    0,      -12539, -23169, -30272, -32767, -30272, -23169, -12539,
    0,      12539,  23169,  30272,  32767,  30272,  23169,  12539,
    0,      -12539, -23169, -30272, -32767, -30272, -23169, -12539,
    0,      12539,  23169,  30272,  32767,  30272,  23169,  12539,
    0,      -12539, -23169, -30272, -32767, -30272, -23169, -12539,

    // 8th Harmonic
    0,      23169,  32767,  23169,  0,      -23169, -32767, -23169,
    0,      23169,  32767,  23169,  0,      -23169, -32767, -23169,
    0,      23169,  32767,  23169,  0,      -23169, -32767, -23169,
    0,      23169,  32767,  23169,  0,      -23169, -32767, -23169,
    0,      23169,  32767,  23169,  0,      -23169, -32767, -23169,
    0,      23169,  32767,  23169,  0,      -23169, -32767, -23169,
    0,      23169,  32767,  23169,  0,      -23169, -32767, -23169,
    0,      23169,  32767,  23169,  0,      -23169, -32767, -23169,
};

s16 gSquareWaveSample[] ALIGNED(16) = {
    // 1st Harmonic
    0,      0,      0,      0,      0,      0,      0,      0,
    0,      0,      0,      0,      0,      0,      0,      0,
    32767,  32767,  32767,  32767,  32767,  32767,  32767,  32767,
    32767,  32767,  32767,  32767,  32767,  32767,  32767,  32767,
    0,      0,      0,      0,      0,      0,      0,      0,
    0,      0,      0,      0,      0,      0,      0,      0,
    -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767,
    -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767,

    // 2nd Harmonic
    0,      0,      0,      0,      0,      0,      0,      0,
    32767,  32767,  32767,  32767,  32767,  32767,  32767,  32767,
    0,      0,      0,      0,      0,      0,      0,      0,
    -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767,
    0,      0,      0,      0,      0,      0,      0,      0,
    32767,  32767,  32767,  32767,  32767,  32767,  32767,  32767,
    0,      0,      0,      0,      0,      0,      0,      0,

    // 4th Harmonic
    -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767,
    0,      0,      0,      0,      32767,  32767,  32767,  32767,
    0,      0,      0,      0,      -32767, -32767, -32767, -32767,
    0,      0,      0,      0,      32767,  32767,  32767,  32767,
    0,      0,      0,      0,      -32767, -32767, -32767, -32767,
    0,      0,      0,      0,      32767,  32767,  32767,  32767,
    0,      0,      0,      0,      -32767, -32767, -32767, -32767,
    0,      0,      0,      0,      32767,  32767,  32767,  32767,
    0,      0,      0,      0,      -32767, -32767, -32767, -32767,

    // 8th Harmonic
    0,      0,      32767,  32767,  0,      0,      -32767, -32767,
    0,      0,      32767,  32767,  0,      0,      -32767, -32767,
    0,      0,      32767,  32767,  0,      0,      -32767, -32767,
    0,      0,      32767,  32767,  0,      0,      -32767, -32767,
    0,      0,      32767,  32767,  0,      0,      -32767, -32767,
    0,      0,      32767,  32767,  0,      0,      -32767, -32767,
    0,      0,      32767,  32767,  0,      0,      -32767, -32767,
    0,      0,      32767,  32767,  0,      0,      -32767, -32767,
};

s16 gWhiteNoiseSample[] ALIGNED(16) = {
    // 1st Harmonic
    0,      -25689, -25791, 27803,  -27568, -21030, 22174,  6298,
    27071,  -18531, 28649,  2284,   3380,   6890,   -12682, -21114,
    10000,  -24520, 32296,  12248,  15096,  15354,  -12021, -31545,
    -12929, 6388,   -11064, 30456,  -30316, -21999, 29691,  27649,
    0,      -27649, -29691, 21999,  30316,  -30457, 11064,  -6387,
    12929,  31544,  12021,  -15353, -15096, -12249, -32296, 24521,
    -10000, 21113,  12682,  -6889,  -3380,  -2285,  -28649, 18532,
    -27071, -6299,  -22174, 21031,  27568,  -27804, 25791,  25690,

    // 2nd Harmonic
    0,      -25791, -27568, 22174,  27071,  28649,  3380,   -12682,
    10000,  32296,  15096,  -12021, -12929, -11064, -30316, 29691,
    0,      -29691, 30316,  11064,  12929,  12021,  -15096, -32296,
    -10000, 12682,  -3380,  -28649, -27071, -22174, 27568,  25791,
    0,      -25791, -27568, 22174,  27071,  28649,  3380,   -12682,
    10000,  32296,  15096,  -12021, -12929, -11064, -30316, 29691,
    0,      -29691, 30316,  11064,  12929,  12021,  -15096, -32296,
    -10000, 12682,  -3380,  -28649, -27071, -22174, 27568,  25791,

    // 4th Harmonic
    0,      -27568, 27071,  3380,   10000,  15096,  -12929, -30316,
    0,      30316,  12929,  -15096, -10000, -3380,  -27071, 27568,
    0,      -27568, 27071,  3380,   10000,  15096,  -12929, -30316,
    0,      30316,  12929,  -15096, -10000, -3380,  -27071, 27568,
    0,      -27568, 27071,  3380,   10000,  15096,  -12929, -30316,
    0,      30316,  12929,  -15096, -10000, -3380,  -27071, 27568,
    0,      -27568, 27071,  3380,   10000,  15096,  -12929, -30316,
    0,      30316,  12929,  -15096, -10000, -3380,  -27071, 27568,

    // 8th Harmonic
    0,      27071,  10000,  -12929, 0,      12929,  -10000, -27071,
    0,      27071,  10000,  -12929, 0,      12929,  -10000, -27071,
    0,      27071,  10000,  -12929, 0,      12929,  -10000, -27071,
    0,      27071,  10000,  -12929, 0,      12929,  -10000, -27071,
    0,      27071,  10000,  -12929, 0,      12929,  -10000, -27071,
    0,      27071,  10000,  -12929, 0,      12929,  -10000, -27071,
    0,      27071,  10000,  -12929, 0,      12929,  -10000, -27071,
    0,      27071,  10000,  -12929, 0,      12929,  -10000, -27071,
};

// Sine White Noise?
s16 D_801D4790[] ALIGNED(16) = {
    // 1st Harmonic
    0,      16316,  20148,  20257,  27209,  -32657, 29264,  27259,
    -29394, -21494, -26410, 30770,  30033,  29130,  20206,  14129,
    20000,  25677,  19024,  9146,   6921,   4506,   -5868,  -13122,
    -7858,  -1885,  -7042,  -14025, -11903, -8647,  -12346, -12396,
    0,      12396,  12346,  8647,   11903,  14024,  7042,   1886,
    7858,   13121,  5868,   -4505,  -6921,  -9147,  -19024, -25676,
    -20000, -14130, -20206, -29129, -30033, -30771, 26410,  21495,
    29394,  -27260, -29264, 32658,  -27209, -20258, -20148, -16315,

    // 2nd Harmonic
    0,      20148,  27209,  29264,  -29394, -26410, 30033,  20206,
    20000,  19024,  6921,   -5868,  -7858,  -7042,  -11903, -12346,
    0,      12346,  11903,  7042,   7858,   5868,   -6921,  -19024,
    -20000, -20206, -30033, 26410,  29394,  -29264, -27209, -20148,
    0,      20148,  27209,  29264,  -29394, -26410, 30033,  20206,
    20000,  19024,  6921,   -5868,  -7858,  -7042,  -11903, -12346,
    0,      12346,  11903,  7042,   7858,   5868,   -6921,  -19024,
    -20000, -20206, -30033, 26410,  29394,  -29264, -27209, -20148,

    // 4th Harmonic
    0,      27209,  -29394, 30033,  20000,  6921,   -7858,  -11903,
    0,      11903,  7858,   -6921,  -20000, -30033, 29394,  -27209,
    0,      27209,  -29394, 30033,  20000,  6921,   -7858,  -11903,
    0,      11903,  7858,   -6921,  -20000, -30033, 29394,  -27209,
    0,      27209,  -29394, 30033,  20000,  6921,   -7858,  -11903,
    0,      11903,  7858,   -6921,  -20000, -30033, 29394,  -27209,
    0,      27209,  -29394, 30033,  20000,  6921,   -7858,  -11903,
    0,      11903,  7858,   -6921,  -20000, -30033, 29394,  -27209,

    // 8th Harmonic
    0,      -29394, 20000,  -7858,  0,      7858,   -20000, 29394,
    0,      -29394, 20000,  -7858,  0,      7858,   -20000, 29394,
    0,      -29394, 20000,  -7858,  0,      7858,   -20000, 29394,
    0,      -29394, 20000,  -7858,  0,      7858,   -20000, 29394,
    0,      -29394, 20000,  -7858,  0,      7858,   -20000, 29394,
    0,      -29394, 20000,  -7858,  0,      7858,   -20000, 29394,
    0,      -29394, 20000,  -7858,  0,      7858,   -20000, 29394,
    0,      -29394, 20000,  -7858,  0,      7858,   -20000, 29394,
};

// Pulse Wave (duty cycle = 12.5%)
s16 gEighthPulseWaveSample[] ALIGNED(16) = {
    // 1st Harmonic
    0,      0,      0,      0,      0,      0, 0,      0,
    0,      0,      0,      0,      0,      0, 0,      0,
    32767,  32767,  32767,  32767,  0,      0, 0,      0,
    0,      0,      0,      0,      0,      0, 0,      0,
    0,      0,      0,      0,      0,      0, 0,      0,
    0,      0,      0,      0,      0,      0, 0,      0,
    -32767, -32767, -32767, -32767, 0,      0, 0,      0,
    0,      0,      0,      0,      0,      0, 0,      0,

    // 2nd Harmonic
    0,      0,      0,      0,      0,      0, 0,      0,
    32767,  32767,  0,      0,      0,      0, 0,      0,
    0,      0,      0,      0,      0,      0, 0,      0,
    -32767, -32767, 0,      0,      0,      0, 0,      0,
    0,      0,      0,      0,      0,      0, 0,      0,
    32767,  32767,  0,      0,      0,      0, 0,      0,
    0,      0,      0,      0,      0,      0, 0,      0,
    -32767, -32767, 0,      0,      0,      0, 0,      0,

    // 4th Harmonic
    0,      0,      0,      0,      32767,  0, 0,      0,
    0,      0,      0,      0,      -32767, 0, 0,      0,
    0,      0,      0,      0,      32767,  0, 0,      0,
    0,      0,      0,      0,      -32767, 0, 0,      0,
    0,      0,      0,      0,      32767,  0, 0,      0,
    0,      0,      0,      0,      -32767, 0, 0,      0,
    0,      0,      0,      0,      32767,  0, 0,      0,
    0,      0,      0,      0,      -32767, 0, 0,      0,

    // 8th Harmonic
    0,      0,      32767,  0,      0,      0, -32767, 0,
    0,      0,      32767,  0,      0,      0, -32767, 0,
    0,      0,      32767,  0,      0,      0, -32767, 0,
    0,      0,      32767,  0,      0,      0, -32767, 0,
    0,      0,      32767,  0,      0,      0, -32767, 0,
    0,      0,      32767,  0,      0,      0, -32767, 0,
    0,      0,      32767,  0,      0,      0, -32767, 0,
    0,      0,      32767,  0,      0,      0, -32767, 0,
};

// Pulse Wave (duty cycle = 25%)
s16 gQuarterPulseWaveSample[] ALIGNED(16) = {
    // 1st Harmonic
    0,      0,      0,      0,      0,      0,      0,      0,
    0,      0,      0,      0,      0,      0,      0,      0,
    32767,  32767,  32767,  32767,  32767,  32767,  32767,  32767,
    0,      0,      0,      0,      0,      0,      0,      0,
    0,      0,      0,      0,      0,      0,      0,      0,
    0,      0,      0,      0,      0,      0,      0,      0,
    -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767,
    0,      0,      0,      0,      0,      0,      0,      0,

    // 2nd Harmonic
    0,      0,      0,      0,      0,      0,      0,      0,
    32767,  32767,  32767,  32767,  0,      0,      0,      0,
    0,      0,      0,      0,      0,      0,      0,      0,
    -32767, -32767, -32767, -32767, 0,      0,      0,      0,
    0,      0,      0,      0,      0,      0,      0,      0,
    32767,  32767,  32767,  32767,  0,      0,      0,      0,
    0,      0,      0,      0,      0,      0,      0,      0,
    -32767, -32767, -32767, -32767, 0,      0,      0,      0,

    // 4th Harmonic
    0,      0,      0,      0,      32767,  32767,  0,      0,
    0,      0,      0,      0,      -32767, -32767, 0,      0,
    0,      0,      0,      0,      32767,  32767,  0,      0,
    0,      0,      0,      0,      -32767, -32767, 0,      0,
    0,      0,      0,      0,      32767,  32767,  0,      0,
    0,      0,      0,      0,      -32767, -32767, 0,      0,
    0,      0,      0,      0,      32767,  32767,  0,      0,
    0,      0,      0,      0,      -32767, -32767, 0,      0,

    // 8th Harmonic
    0,      0,      32767,  0,      0,      0,      -32767, 0,
    0,      0,      32767,  0,      0,      0,      -32767, 0,
    0,      0,      32767,  0,      0,      0,      -32767, 0,
    0,      0,      32767,  0,      0,      0,      -32767, 0,
    0,      0,      32767,  0,      0,      0,      -32767, 0,
    0,      0,      32767,  0,      0,      0,      -32767, 0,
    0,      0,      32767,  0,      0,      0,      -32767, 0,
    0,      0,      32767,  0,      0,      0,      -32767, 0,
};
// clang-format on

s16* gWaveSamples[] = {
    gSawtoothWaveSample, gTriangleWaveSample,    gSineWaveSample,         gSquareWaveSample,       gWhiteNoiseSample,
    D_801D4790,          gEighthPulseWaveSample, gQuarterPulseWaveSample, gQuarterPulseWaveSample,
};

f32 gBendPitchOneOctaveFrequencies[] = {
    0.5f,      0.5f,      0.502736f, 0.505488f, 0.508254f, 0.511036f, 0.513833f, 0.516645f, 0.519472f, 0.522315f,
    0.525174f, 0.528048f, 0.530938f, 0.533843f, 0.536765f, 0.539702f, 0.542656f, 0.545626f, 0.548612f, 0.551614f,
    0.554633f, 0.557669f, 0.560721f, 0.563789f, 0.566875f, 0.569977f, 0.573097f, 0.576233f, 0.579387f, 0.582558f,
    0.585746f, 0.588951f, 0.592175f, 0.595415f, 0.598674f, 0.60195f,  0.605245f, 0.608557f, 0.611888f, 0.615236f,
    0.618603f, 0.621989f, 0.625393f, 0.628815f, 0.632257f, 0.635717f, 0.639196f, 0.642694f, 0.646212f, 0.649748f,
    0.653304f, 0.65688f,  0.660475f, 0.664089f, 0.667724f, 0.671378f, 0.675052f, 0.678747f, 0.682461f, 0.686196f,
    0.689952f, 0.693727f, 0.697524f, 0.701341f, 0.70518f,  0.709039f, 0.712919f, 0.716821f, 0.720744f, 0.724689f,
    0.728655f, 0.732642f, 0.736652f, 0.740684f, 0.744737f, 0.748813f, 0.752911f, 0.757031f, 0.761175f, 0.76534f,
    0.769529f, 0.77374f,  0.777975f, 0.782232f, 0.786513f, 0.790818f, 0.795146f, 0.799497f, 0.803873f, 0.808272f,
    0.812696f, 0.817144f, 0.821616f, 0.826112f, 0.830633f, 0.835179f, 0.83975f,  0.844346f, 0.848966f, 0.853613f,
    0.858284f, 0.862982f, 0.867704f, 0.872453f, 0.877228f, 0.882029f, 0.886856f, 0.891709f, 0.89659f,  0.901496f,
    0.90643f,  0.911391f, 0.916379f, 0.921394f, 0.926436f, 0.931507f, 0.936604f, 0.94173f,  0.946884f, 0.952066f,
    0.957277f, 0.962516f, 0.967783f, 0.97308f,  0.978405f, 0.98376f,  0.989144f, 0.994557f, 1.0f,      1.005473f,
    1.010975f, 1.016508f, 1.022071f, 1.027665f, 1.033289f, 1.038944f, 1.04463f,  1.050347f, 1.056095f, 1.061875f,
    1.067687f, 1.07353f,  1.079405f, 1.085312f, 1.091252f, 1.097224f, 1.103229f, 1.109267f, 1.115337f, 1.121441f,
    1.127579f, 1.13375f,  1.139955f, 1.146193f, 1.152466f, 1.158773f, 1.165115f, 1.171491f, 1.177903f, 1.184349f,
    1.190831f, 1.197348f, 1.203901f, 1.210489f, 1.217114f, 1.223775f, 1.230473f, 1.237207f, 1.243978f, 1.250786f,
    1.257631f, 1.264514f, 1.271434f, 1.278392f, 1.285389f, 1.292423f, 1.299497f, 1.306608f, 1.313759f, 1.320949f,
    1.328178f, 1.335447f, 1.342756f, 1.350104f, 1.357493f, 1.364922f, 1.372392f, 1.379903f, 1.387455f, 1.395048f,
    1.402683f, 1.41036f,  1.418078f, 1.425839f, 1.433642f, 1.441488f, 1.449377f, 1.457309f, 1.465285f, 1.473304f,
    1.481367f, 1.489474f, 1.497626f, 1.505822f, 1.514063f, 1.522349f, 1.530681f, 1.539058f, 1.547481f, 1.55595f,
    1.564465f, 1.573027f, 1.581636f, 1.590292f, 1.598995f, 1.607746f, 1.616545f, 1.625392f, 1.634287f, 1.643231f,
    1.652224f, 1.661266f, 1.670358f, 1.6795f,   1.688691f, 1.697933f, 1.707225f, 1.716569f, 1.725963f, 1.735409f,
    1.744906f, 1.754456f, 1.764058f, 1.773712f, 1.783419f, 1.793179f, 1.802993f, 1.81286f,  1.822782f, 1.832757f,
    1.842788f, 1.852873f, 1.863013f, 1.873209f, 1.883461f, 1.893768f, 1.904132f, 1.914553f, 1.925031f, 1.935567f,
    1.946159f, 1.95681f,  1.96752f,  1.978287f, 1.989114f, 2.0f,
};

f32 gBendPitchTwoSemitonesFrequencies[] = {
    0.890899f, 0.890899f, 0.89171f,  0.892521f, 0.893333f, 0.894146f, 0.89496f,  0.895774f, 0.89659f,  0.897406f,
    0.898222f, 0.89904f,  0.899858f, 0.900677f, 0.901496f, 0.902317f, 0.903138f, 0.90396f,  0.904783f, 0.905606f,
    0.90643f,  0.907255f, 0.908081f, 0.908907f, 0.909734f, 0.910562f, 0.911391f, 0.91222f,  0.91305f,  0.913881f,
    0.914713f, 0.915545f, 0.916379f, 0.917213f, 0.918047f, 0.918883f, 0.919719f, 0.920556f, 0.921394f, 0.922232f,
    0.923072f, 0.923912f, 0.924752f, 0.925594f, 0.926436f, 0.927279f, 0.928123f, 0.928968f, 0.929813f, 0.93066f,
    0.931507f, 0.932354f, 0.933203f, 0.934052f, 0.934902f, 0.935753f, 0.936604f, 0.937457f, 0.93831f,  0.939164f,
    0.940019f, 0.940874f, 0.94173f,  0.942587f, 0.943445f, 0.944304f, 0.945163f, 0.946023f, 0.946884f, 0.947746f,
    0.948608f, 0.949472f, 0.950336f, 0.951201f, 0.952066f, 0.952933f, 0.9538f,   0.954668f, 0.955537f, 0.956406f,
    0.957277f, 0.958148f, 0.95902f,  0.959893f, 0.960766f, 0.961641f, 0.962516f, 0.963392f, 0.964268f, 0.965146f,
    0.966024f, 0.966903f, 0.967783f, 0.968664f, 0.969546f, 0.970428f, 0.971311f, 0.972195f, 0.97308f,  0.973965f,
    0.974852f, 0.975739f, 0.976627f, 0.977516f, 0.978405f, 0.979296f, 0.980187f, 0.981079f, 0.981972f, 0.982865f,
    0.98376f,  0.984655f, 0.985551f, 0.986448f, 0.987346f, 0.988244f, 0.989144f, 0.990044f, 0.990945f, 0.991847f,
    0.992749f, 0.993653f, 0.994557f, 0.995462f, 0.996368f, 0.997275f, 0.998182f, 0.999091f, 1.0f,      1.00091f,
    1.001821f, 1.002733f, 1.003645f, 1.004559f, 1.005473f, 1.006388f, 1.007304f, 1.00822f,  1.009138f, 1.010056f,
    1.010975f, 1.011896f, 1.012816f, 1.013738f, 1.014661f, 1.015584f, 1.016508f, 1.017433f, 1.018359f, 1.019286f,
    1.020214f, 1.021142f, 1.022071f, 1.023002f, 1.023933f, 1.024864f, 1.025797f, 1.026731f, 1.027665f, 1.0286f,
    1.029536f, 1.030473f, 1.031411f, 1.03235f,  1.033289f, 1.03423f,  1.035171f, 1.036113f, 1.037056f, 1.038f,
    1.038944f, 1.03989f,  1.040836f, 1.041783f, 1.042731f, 1.04368f,  1.04463f,  1.045581f, 1.046532f, 1.047485f,
    1.048438f, 1.049392f, 1.050347f, 1.051303f, 1.05226f,  1.053217f, 1.054176f, 1.055135f, 1.056095f, 1.057056f,
    1.058018f, 1.058981f, 1.059945f, 1.06091f,  1.061875f, 1.062842f, 1.063809f, 1.064777f, 1.065746f, 1.066716f,
    1.067687f, 1.068658f, 1.069631f, 1.070604f, 1.071578f, 1.072554f, 1.07353f,  1.074507f, 1.075485f, 1.076463f,
    1.077443f, 1.078424f, 1.079405f, 1.080387f, 1.08137f,  1.082355f, 1.08334f,  1.084325f, 1.085312f, 1.0863f,
    1.087289f, 1.088278f, 1.089268f, 1.09026f,  1.091252f, 1.092245f, 1.093239f, 1.094234f, 1.09523f,  1.096226f,
    1.097224f, 1.098223f, 1.099222f, 1.100222f, 1.101224f, 1.102226f, 1.103229f, 1.104233f, 1.105238f, 1.106244f,
    1.10725f,  1.108258f, 1.109267f, 1.110276f, 1.111287f, 1.112298f, 1.11331f,  1.114323f, 1.115337f, 1.116352f,
    1.117368f, 1.118385f, 1.119403f, 1.120422f, 1.121441f, 1.122462f,
};

f32 gPitchFrequencies[] = {
    /* 0x00 */ 0.105112f,   // PITCH_A0
    /* 0x01 */ 0.111362f,   // PITCH_BFLAT0
    /* 0x02 */ 0.117984f,   // PITCH_B0
    /* 0x03 */ 0.125f,      // PITCH_C1
    /* 0x04 */ 0.132433f,   // PITCH_DFLAT1
    /* 0x05 */ 0.140308f,   // PITCH_D1
    /* 0x06 */ 0.148651f,   // PITCH_EFLAT1
    /* 0x07 */ 0.15749f,    // PITCH_E1
    /* 0x08 */ 0.166855f,   // PITCH_F1
    /* 0x09 */ 0.176777f,   // PITCH_GFLAT1
    /* 0x0A */ 0.187288f,   // PITCH_G1
    /* 0x0B */ 0.198425f,   // PITCH_AFLAT1
    /* 0x0C */ 0.210224f,   // PITCH_A1
    /* 0x0D */ 0.222725f,   // PITCH_BFLAT1
    /* 0x0E */ 0.235969f,   // PITCH_B1
    /* 0x0F */ 0.25f,       // PITCH_C2
    /* 0x10 */ 0.264866f,   // PITCH_DFLAT2
    /* 0x11 */ 0.280616f,   // PITCH_D2
    /* 0x12 */ 0.297302f,   // PITCH_EFLAT2
    /* 0x13 */ 0.31498f,    // PITCH_E2
    /* 0x14 */ 0.33371f,    // PITCH_F2
    /* 0x15 */ 0.353553f,   // PITCH_GFLAT2
    /* 0x16 */ 0.374577f,   // PITCH_G2
    /* 0x17 */ 0.39685f,    // PITCH_AFLAT2
    /* 0x18 */ 0.420448f,   // PITCH_A2
    /* 0x19 */ 0.445449f,   // PITCH_BFLAT2
    /* 0x1A */ 0.471937f,   // PITCH_B2
    /* 0x1B */ 0.5f,        // PITCH_C3
    /* 0x1C */ 0.529732f,   // PITCH_DFLAT3
    /* 0x1D */ 0.561231f,   // PITCH_D3
    /* 0x1E */ 0.594604f,   // PITCH_EFLAT3
    /* 0x1F */ 0.629961f,   // PITCH_E3
    /* 0x20 */ 0.66742f,    // PITCH_F3
    /* 0x21 */ 0.707107f,   // PITCH_GFLAT3
    /* 0x22 */ 0.749154f,   // PITCH_G3
    /* 0x23 */ 0.793701f,   // PITCH_AFLAT3
    /* 0x24 */ 0.840897f,   // PITCH_A3
    /* 0x25 */ 0.890899f,   // PITCH_BFLAT3
    /* 0x26 */ 0.943875f,   // PITCH_B3
    /* 0x27 */ 1.0f,        // PITCH_C4 (Middle C)
    /* 0x28 */ 1.059463f,   // PITCH_DFLAT4
    /* 0x29 */ 1.122462f,   // PITCH_D4
    /* 0x2A */ 1.189207f,   // PITCH_EFLAT4
    /* 0x2B */ 1.259921f,   // PITCH_E4
    /* 0x2C */ 1.33484f,    // PITCH_F4
    /* 0x2D */ 1.414214f,   // PITCH_GFLAT4
    /* 0x2E */ 1.498307f,   // PITCH_G4
    /* 0x2F */ 1.587401f,   // PITCH_AFLAT4
    /* 0x30 */ 1.681793f,   // PITCH_A4
    /* 0x31 */ 1.781798f,   // PITCH_BFLAT4
    /* 0x32 */ 1.887749f,   // PITCH_B4
    /* 0x33 */ 2.0f,        // PITCH_C5
    /* 0x34 */ 2.118926f,   // PITCH_DFLAT5
    /* 0x35 */ 2.244924f,   // PITCH_D5
    /* 0x36 */ 2.378414f,   // PITCH_EFLAT5
    /* 0x37 */ 2.519842f,   // PITCH_E5
    /* 0x38 */ 2.66968f,    // PITCH_F5
    /* 0x39 */ 2.828428f,   // PITCH_GFLAT5
    /* 0x3A */ 2.996615f,   // PITCH_G5
    /* 0x3B */ 3.174803f,   // PITCH_AFLAT5
    /* 0x3C */ 3.363586f,   // PITCH_A5
    /* 0x3D */ 3.563596f,   // PITCH_BFLAT5
    /* 0x3E */ 3.775498f,   // PITCH_B5
    /* 0x3F */ 4.0f,        // PITCH_C6
    /* 0x40 */ 4.237853f,   // PITCH_DFLAT6
    /* 0x41 */ 4.489849f,   // PITCH_D6
    /* 0x42 */ 4.756829f,   // PITCH_EFLAT6
    /* 0x43 */ 5.039685f,   // PITCH_E6
    /* 0x44 */ 5.33936f,    // PITCH_F6
    /* 0x45 */ 5.656855f,   // PITCH_GFLAT6
    /* 0x46 */ 5.993229f,   // PITCH_G6
    /* 0x47 */ 6.349606f,   // PITCH_AFLAT6
    /* 0x48 */ 6.727173f,   // PITCH_A6
    /* 0x49 */ 7.127192f,   // PITCH_BFLAT6
    /* 0x4A */ 7.550996f,   // PITCH_B6
    /* 0x4B */ 8.0f,        // PITCH_C7
    /* 0x4C */ 8.475705f,   // PITCH_DFLAT7
    /* 0x4D */ 8.979697f,   // PITCH_D7
    /* 0x4E */ 9.513658f,   // PITCH_EFLAT7
    /* 0x4F */ 10.07937f,   // PITCH_E7
    /* 0x50 */ 10.6787205f, // PITCH_F7
    /* 0x51 */ 11.31371f,   // PITCH_GFLAT7
    /* 0x52 */ 11.986459f,  // PITCH_G7
    /* 0x53 */ 12.699211f,  // PITCH_AFLAT7
    /* 0x54 */ 13.454346f,  // PITCH_A7
    /* 0x55 */ 14.254383f,  // PITCH_BFLAT7
    /* 0x56 */ 15.101993f,  // PITCH_B7
    /* 0x57 */ 16.0f,       // PITCH_C8
    /* 0x58 */ 16.95141f,   // PITCH_DFLAT8
    /* 0x59 */ 17.959395f,  // PITCH_D8
    /* 0x5A */ 19.027315f,  // PITCH_EFLAT8
    /* 0x5B */ 20.15874f,   // PITCH_E8
    /* 0x5C */ 21.35744f,   // PITCH_F8
    /* 0x5D */ 22.62742f,   // PITCH_GFLAT8
    /* 0x5E */ 23.972918f,  // PITCH_G8
    /* 0x5F */ 25.398422f,  // PITCH_AFLAT8
    /* 0x60 */ 26.908691f,  // PITCH_A8
    /* 0x61 */ 28.508766f,  // PITCH_BFLAT8
    /* 0x62 */ 30.203985f,  // PITCH_B8
    /* 0x63 */ 32.0f,       // PITCH_C9
    /* 0x64 */ 33.90282f,   // PITCH_DFLAT9
    /* 0x65 */ 35.91879f,   // PITCH_D9
    /* 0x66 */ 38.05463f,   // PITCH_EFLAT9
    /* 0x67 */ 40.31748f,   // PITCH_E9
    /* 0x68 */ 42.71488f,   // PITCH_F9
    /* 0x69 */ 45.25484f,   // PITCH_GFLAT9
    /* 0x6A */ 47.945835f,  // PITCH_G9
    /* 0x6B */ 50.796845f,  // PITCH_AFLAT9
    /* 0x6C */ 53.817383f,  // PITCH_A9
    /* 0x6D */ 57.017532f,  // PITCH_BFLAT9
    /* 0x6E */ 60.40797f,   // PITCH_B9
    /* 0x6F */ 64.0f,       // PITCH_C10
    /* 0x70 */ 67.80564f,   // PITCH_DFLAT10
    /* 0x71 */ 71.83758f,   // PITCH_D10
    /* 0x72 */ 76.10926f,   // PITCH_EFLAT10
    /* 0x73 */ 80.63496f,   // PITCH_E10
    /* 0x74 */ 85.42976f,   // PITCH_F10
    /* 0x75 */ 0.055681f,   // PITCH_BFLATNEG1
    /* 0x76 */ 0.058992f,   // PITCH_BNEG1
    /* 0x77 */ 0.0625f,     // PITCH_C0
    /* 0x78 */ 0.066216f,   // PITCH_DFLAT0
    /* 0x79 */ 0.070154f,   // PITCH_D0
    /* 0x7A */ 0.074325f,   // PITCH_EFLAT0
    /* 0x7B */ 0.078745f,   // PITCH_E0
    /* 0x7C */ 0.083427f,   // PITCH_F0
    /* 0x7D */ 0.088388f,   // PITCH_GFLAT0
    /* 0x7E */ 0.093644f,   // PITCH_G0
    /* 0x7F */ 0.099213f,   // PITCH_AFLAT0
};

u8 gDefaultShortNoteVelocityTable[] = {
    12, 25, 38, 51, 57, 64, 71, 76, 83, 89, 96, 102, 109, 115, 121, 127,
};

u8 gDefaultShortNoteGateTimeTable[] = {
    229, 203, 177, 151, 139, 126, 113, 100, 87, 74, 61, 48, 36, 23, 10, 0,
};

EnvelopePoint gDefaultEnvelope[] = {
    { BE16SWAP_CONST(1), BE16SWAP_CONST(32000) },
    { BE16SWAP_CONST(1000), BE16SWAP_CONST(32000) },
    { BE16SWAP_CONST(ADSR_HANG), BE16SWAP_CONST(0) },
    { BE16SWAP_CONST(ADSR_DISABLE), BE16SWAP_CONST(0) },
};

NoteSampleState gZeroedSampleState = { 0 };

NoteSampleState gDefaultSampleState = {
    { true, true, false, false, false, false, false, false },
    { 0 },
    0,    // gain
    0,    // haasEffectLeftDelaySize
    0,    // haasEffectRightDelaySize
    0,    // targetReverbVol
    0,    // harmonicIndexCurAndPrev
    0,    // combFilterSize
    0,    // targetVolLeft
    0,    // targetVolRight
    0,    // frequencyFixedPoint
    0,    // combFilterGain
    NULL, // tunedSample
    NULL, // filter
    0,    // unk_18
    0,    // surroundEffectIndex
    0,    // unk_1A
};

u16 gHaasEffectDelaySize[64] = {
    30 * SAMPLE_SIZE,
    29 * SAMPLE_SIZE,
    28 * SAMPLE_SIZE,
    27 * SAMPLE_SIZE,
    26 * SAMPLE_SIZE,
    25 * SAMPLE_SIZE,
    24 * SAMPLE_SIZE,
    23 * SAMPLE_SIZE,
    22 * SAMPLE_SIZE,
    21 * SAMPLE_SIZE,
    20 * SAMPLE_SIZE,
    19 * SAMPLE_SIZE,
    18 * SAMPLE_SIZE,
    17 * SAMPLE_SIZE,
    16 * SAMPLE_SIZE,
    15 * SAMPLE_SIZE,
    14 * SAMPLE_SIZE,
    13 * SAMPLE_SIZE,
    12 * SAMPLE_SIZE,
    11 * SAMPLE_SIZE,
    10 * SAMPLE_SIZE,
    9 * SAMPLE_SIZE,
    8 * SAMPLE_SIZE,
    7 * SAMPLE_SIZE,
    6 * SAMPLE_SIZE,
    5 * SAMPLE_SIZE,
    4 * SAMPLE_SIZE,
    3 * SAMPLE_SIZE,
    2 * SAMPLE_SIZE,
    1 * SAMPLE_SIZE,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
};

s32 D_801D58A4 = 0;

// clang-format off
s16 gInvalidAdpcmCodeBook[] = {
    0, 0, 0, 0,   0, 0, 0, 0,
    0, 0, 0, 0,   0, 0, 0, 0,
    0, 0, 0, 0,   0, 0, 0, 0,
    0, 0, 0, 0,   0, 0, 0, 0,
    0, 0, 0, 500, 0, 0, 0, 0,
    0, 0, 0, 500, 0, 0, 0, 0,
    0, 0, 0, 500, 0, 0, 0, 0,
    0, 0, 0, 500, 0, 0, 0, 0,
};
// clang-format on

f32 gHeadsetPanVolume[] = {
    1.0f,      0.995386f, 0.990772f, 0.986157f, 0.981543f, 0.976929f, 0.972315f, 0.967701f, 0.963087f, 0.958472f,
    0.953858f, 0.949244f, 0.94463f,  0.940016f, 0.935402f, 0.930787f, 0.926173f, 0.921559f, 0.916945f, 0.912331f,
    0.907717f, 0.903102f, 0.898488f, 0.893874f, 0.88926f,  0.884646f, 0.880031f, 0.875417f, 0.870803f, 0.866189f,
    0.861575f, 0.856961f, 0.852346f, 0.847732f, 0.843118f, 0.838504f, 0.83389f,  0.829276f, 0.824661f, 0.820047f,
    0.815433f, 0.810819f, 0.806205f, 0.801591f, 0.796976f, 0.792362f, 0.787748f, 0.783134f, 0.77852f,  0.773906f,
    0.769291f, 0.764677f, 0.760063f, 0.755449f, 0.750835f, 0.74622f,  0.741606f, 0.736992f, 0.732378f, 0.727764f,
    0.72315f,  0.718535f, 0.713921f, 0.709307f, 0.70537f,  0.70211f,  0.69885f,  0.695591f, 0.692331f, 0.689071f,
    0.685811f, 0.682551f, 0.679291f, 0.676031f, 0.672772f, 0.669512f, 0.666252f, 0.662992f, 0.659732f, 0.656472f,
    0.653213f, 0.649953f, 0.646693f, 0.643433f, 0.640173f, 0.636913f, 0.633654f, 0.630394f, 0.627134f, 0.623874f,
    0.620614f, 0.617354f, 0.614094f, 0.610835f, 0.607575f, 0.604315f, 0.601055f, 0.597795f, 0.594535f, 0.591276f,
    0.588016f, 0.584756f, 0.581496f, 0.578236f, 0.574976f, 0.571717f, 0.568457f, 0.565197f, 0.561937f, 0.558677f,
    0.555417f, 0.552157f, 0.548898f, 0.545638f, 0.542378f, 0.539118f, 0.535858f, 0.532598f, 0.529339f, 0.526079f,
    0.522819f, 0.519559f, 0.516299f, 0.513039f, 0.50978f,  0.50652f,  0.50326f,  0.5f,
};

f32 gStereoPanVolume[] = {
    0.707f,    0.716228f, 0.725457f, 0.734685f, 0.743913f, 0.753142f, 0.76237f,  0.771598f, 0.780827f, 0.790055f,
    0.799283f, 0.808512f, 0.81774f,  0.826968f, 0.836197f, 0.845425f, 0.854654f, 0.863882f, 0.87311f,  0.882339f,
    0.891567f, 0.900795f, 0.910024f, 0.919252f, 0.92848f,  0.937709f, 0.946937f, 0.956165f, 0.965394f, 0.974622f,
    0.98385f,  0.993079f, 0.997693f, 0.988465f, 0.979236f, 0.970008f, 0.960779f, 0.951551f, 0.942323f, 0.933095f,
    0.923866f, 0.914638f, 0.905409f, 0.896181f, 0.886953f, 0.877724f, 0.868496f, 0.859268f, 0.850039f, 0.840811f,
    0.831583f, 0.822354f, 0.813126f, 0.803898f, 0.794669f, 0.785441f, 0.776213f, 0.766984f, 0.757756f, 0.748528f,
    0.739299f, 0.730071f, 0.720843f, 0.711614f, 0.695866f, 0.673598f, 0.651331f, 0.629063f, 0.606795f, 0.584528f,
    0.56226f,  0.539992f, 0.517724f, 0.495457f, 0.473189f, 0.450921f, 0.428654f, 0.406386f, 0.384118f, 0.36185f,
    0.339583f, 0.317315f, 0.295047f, 0.27278f,  0.250512f, 0.228244f, 0.205976f, 0.183709f, 0.161441f, 0.139173f,
    0.116905f, 0.094638f, 0.07237f,  0.050102f, 0.027835f, 0.005567f, 0.00835f,  0.019484f, 0.030618f, 0.041752f,
    0.052886f, 0.06402f,  0.075154f, 0.086287f, 0.097421f, 0.108555f, 0.119689f, 0.130823f, 0.141957f, 0.153091f,
    0.164224f, 0.175358f, 0.186492f, 0.197626f, 0.20876f,  0.219894f, 0.231028f, 0.242161f, 0.253295f, 0.264429f,
    0.275563f, 0.286697f, 0.297831f, 0.308965f, 0.320098f, 0.331232f, 0.342366f, 0.3535f,
};

f32 gDefaultPanVolume[] = {
    1.0f,      0.999924f, 0.999694f, 0.999312f, 0.998776f, 0.998088f, 0.997248f, 0.996254f, 0.995109f, 0.993811f,
    0.992361f, 0.990759f, 0.989006f, 0.987101f, 0.985045f, 0.982839f, 0.980482f, 0.977976f, 0.97532f,  0.972514f,
    0.96956f,  0.966457f, 0.963207f, 0.959809f, 0.956265f, 0.952574f, 0.948737f, 0.944755f, 0.940629f, 0.936359f,
    0.931946f, 0.92739f,  0.922692f, 0.917853f, 0.912873f, 0.907754f, 0.902497f, 0.897101f, 0.891567f, 0.885898f,
    0.880093f, 0.874153f, 0.868079f, 0.861873f, 0.855535f, 0.849066f, 0.842467f, 0.835739f, 0.828884f, 0.821901f,
    0.814793f, 0.807561f, 0.800204f, 0.792725f, 0.785125f, 0.777405f, 0.769566f, 0.76161f,  0.753536f, 0.745348f,
    0.737045f, 0.72863f,  0.720103f, 0.711466f, 0.70272f,  0.693867f, 0.684908f, 0.675843f, 0.666676f, 0.657406f,
    0.648036f, 0.638567f, 0.629f,    0.619337f, 0.609579f, 0.599728f, 0.589785f, 0.579752f, 0.56963f,  0.559421f,
    0.549126f, 0.538748f, 0.528287f, 0.517745f, 0.507124f, 0.496425f, 0.485651f, 0.474802f, 0.46388f,  0.452888f,
    0.441826f, 0.430697f, 0.419502f, 0.408243f, 0.396921f, 0.385538f, 0.374097f, 0.362598f, 0.351044f, 0.339436f,
    0.327776f, 0.316066f, 0.304308f, 0.292503f, 0.280653f, 0.268761f, 0.256827f, 0.244854f, 0.232844f, 0.220798f,
    0.208718f, 0.196606f, 0.184465f, 0.172295f, 0.160098f, 0.147877f, 0.135634f, 0.12337f,  0.111087f, 0.098786f,
    0.086471f, 0.074143f, 0.061803f, 0.049454f, 0.037097f, 0.024734f, 0.012368f, 0.0f,
};

// clang-format off
s16 D_801D5F24[8 * (2 + 3 + 3)] = {
    // floor(sin(i * M_PIF / 16) * (2^15 - 1))
    0,      6392,   12539,  18204,  23169,  27244,  30272,  32137,
    32767,  32137,  30272,  27244,  23169,  18204,  12539,  6392,
    // -floor(sin(i * M_PIF / 32) * (2^15 - 1))
    0,      -3211,  -6392,  -9511,  -12539, -15446, -18204, -20787,
    -23169, -25329, -27244, -28897, -30272, -31356, -32137, -32609,
    -32767, -32609, -32137, -31356, -30272, -28897, -27244, -25329,
    // -floor(sin(i * M_PIF / 32) * (2^15 - 1))
    -23169, -25329, -27244, -28897, -30272, -31356, -32137, -32609,
    -32767, -32609, -32137, -31356, -30272, -28897, -27244, -25329,
    -23169, -20787, -18204, -15446, -12539, -9511,  -6392,  -3211,
};
// clang-format on
